<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.79 [en] (Windows NT 5.0; U) [Netscape]">
   <meta name="Author" content="Phil Burk">
   <meta name="Description" content="PortAudio is a cross platform, open-source, audio I/O library.It provides a very simple API for recording and/or playing sound using a simple callback function.">
   <meta name="KeyWords" content="audio, library, portable, open-source, DirectSound,sound, music, JSyn, synthesis,">
   <title>PortAudio Release Notes</title>
</head>
<body>
&nbsp;
<center><table COLS=1 WIDTH="100%" BGCOLOR="#FADA7A" >
<tr>
<td>
<center>
<h1>
PortAudio - Release Notes</h1></center>
</td>
</tr>
</table></center>

<p>Link to <a href="http://www.portaudio.com">PortAudio Home Page</a>
<h2>
<b>V18 - 5/6/02</b></h2>

<blockquote>All source code and documentation now under <a href="http://www.portaudio.com/usingcvs.html">CVS</a>.
<p>Ran most of the code through <a href="http://astyle.sourceforge.net/">AStyle</a>
to cleanup ragged indentation caused by using different editors. Used this
command:
<br><tt>&nbsp;&nbsp; astyle --style=ansi -c -o --convert-tabs --indent-preprocessor
*.c</tt></blockquote>

<blockquote>Added "pa_common/pa_convert.c" for Mac OS X. Start of new conversion
utilities.
<p><b>ASIO</b>
<ul>
<li>
New Pa_ASIO_Adaptor_Init function to init Callback adpatation variables,</li>

<li>
Cleanup of Pa_ASIO_Callback_Input</li>

<li>
Break apart device loading to debug random failure in Pa_ASIO_QueryDeviceInfo</li>

<li>
Deallocate all resources in PaHost_Term for cases where Pa_CloseStream
is not called properly</li>

<li>
New Pa_ASIO_loadDriver that calls CoInitialize on each thread on Windows.
Allows use by multiple threads.</li>

<li>
Correct error code management in PaHost_Term, removed various compiler
warning</li>

<li>
Add Mac includes for &lt;Devices.h> and &lt;Timer.h></li>

<li>
Pa_ASIO_QueryDeviceInfo bug correction, memory allocation checking, better
error handling</li>
</ul>
<b>Mac OS X</b>
<ul>
<li>
Major cleanup and improvements.</li>

<li>
Fixed device queries for numChannels and sampleRates,</li>

<li>
Audio input works if using same CoreAudio device (some HW devices make
separate CoreAudio devices).</li>

<li>
Added paInt16, paInt8, format using new "pa_common/pa_convert.c" file.</li>

<li>
Return error if opened in mono mode cuz not supported.</li>

<li>
Check for getenv("PA_MIN_LATEWNCY_MSEC") to set latency externally.</li>

<li>
Use getrusage() instead of gettimeofday() for CPU Load calculation.</li>
</ul>
<b>Windows MME</b>
<ul>
<li>
Fixed bug that caused TIMEOUT in Pa_StopStream(). Added check for past_StopSoon()
in Pa_TimeSlice(). Thanks Julien Maillard.</li>

<li>
Detect Win XP versus NT, use lower latency.</li>

<li>
Fix DBUG typo;</li>

<li>
removed init of CurrentCount which was not compiling on Borland</li>

<li>
general cleanup, factored streamData alloc and cpu usage initialization</li>

<li>
stopped counting WAVE_MAPPER when there were no audio cards plugged in</li>
</ul>
<b>Windows DirectSound</b>
<ul>
<li>
Detect Win XP and Win 2K properly when determining latency.</li>
</ul>
<b>Unix OSS</b>
<ul>
<li>
Use high real-time priority if app is running with root priveledges. Lowers
latency.</li>

<li>
Added watch dog thread that prevents real-time thread from hogging CPU
and hanging the computer.</li>

<li>
Check error return from read() and write().</li>

<li>
Check CPU endianness instead of assuming Little Endian.</li>
</ul>
</blockquote>

<h2>
<b>V17 - 10/15/01</b></h2>

<blockquote><b>Unix OSS</b>
<ul>
<li>
Set num channels back to two after device query for ALSA. This fixed a
bug in V16 that sometimes caused a failure when querying for the sample
rates. Thanks Stweart Greenhill.</li>
</ul>
</blockquote>

<blockquote>
<h4>
<b>Macintosh Sound Manager</b></h4>

<ul>
<li>
Use NewSndCallBackUPP() for CARBON compatibility.</li>
</ul>
</blockquote>

<h2>
<b>V16 - 9/27/01</b></h2>

<blockquote><b>Added Alpha implementations for ASIO, SGI, and BeOS!</b>
<br>&nbsp;
<li>
CPULoad is now calculated based on the time spent to generate a known number
of frames. This is more accurate than a simple percentage of real-time.
Implemented in pa_unix_oss, pa_win_wmme and pa_win_ds.</li>

<li>
Fix dither and shift for recording PaUInt8 format data.</li>

<li>
Added "patest_maxsines.c" which tests <tt>Pa_GetCPULoad().</tt></li>
</blockquote>

<blockquote>
<h4>
Windows WMME</h4>

<ul>
<li>
sDevicePtrs now allocated using <tt>GlobalAlloc()</tt>. This prevents a
crash in Pa_Terminate() on Win2000. Thanks Mike Berry for finding this.
Thanks Mike Berry.</li>

<li>
Pass process instead of thread to <tt>SetPriorityClass</tt>(). This fixes
a bug that caused the priority to not be increased. Thanks to Alberto di
Bene for spotting this.</li>
</ul>

<h4>
Windows DirectSound</h4>

<ul>
<li>
Casts for compiling with __MWERKS__ CodeWarrior.</li>
</ul>

<h4>
UNIX OSS</h4>

<ul>
<li>
Derived from Linux OSS implementation.</li>

<li>
Numerous patches from Heiko Purnhagen, Stephen Brandon, etc.</li>

<li>
Improved query mechanism which often bailed out unnecessarily.</li>

<li>
Removed sNumDevices and potential related bugs,</li>

<li>
Use <tt>getenv("PA_MIN_LATENCY_MSEC")</tt> in code to set desired latency.
User can set by entering:</li>

<br>&nbsp;&nbsp;&nbsp; <tt>export PA_MIN_LATENCY_MSEC=40</tt></ul>

<h4>
Macintosh Sound Manager</h4>

<ul>
<li>
Pass unused event to WaitNextEvent instead of NULL to prevent Mac OSX crash.
Thanks Dominic Mazzoni.</li>

<li>
Use requested number of input channels.</li>

<br>&nbsp;</ul>
</blockquote>

<h2>
<b>V15 - 5/29/01</b></h2>

<blockquote>
<ul>
<li>
<b>New Linux OSS Beta</b></li>
</ul>

<h4>
Windows WMME</h4>

<ul>
<li>
&nbsp;sDevicePtrs now allocated based on sizeof(pointer). Was allocating
too much space.</li>

<li>
&nbsp;Check for excessive numbers of channels. Some drivers reported bogus
numbers.</li>

<li>
Apply Mike Berry's changes for CodeWarrior on PC including condition including
of memory.h, and explicit typecasting on memory allocation.</li>
</ul>

<h4>
Macintosh Sound Manager</h4>

<ul>
<li>
ScanInputDevices was setting sDefaultOutputDeviceID instead of sDefaultInputDeviceID.</li>

<li>
Device Scan was crashing for anything other than siBadSoundInDevice, but
some Macs may return other errors! Caused failure to init on some G4s under
OS9.</li>

<li>
Fix TIMEOUT in record mode.</li>

<li>
Change CARBON_COMPATIBLE to TARGET_API_MAC_CARBON</li>
</ul>
</blockquote>

<h2>
<b>V14 - 2/6/01</b></h2>

<blockquote>
<ul>
<li>
Added implementation for Windows MultiMedia Extensions (WMME) by Ross and
Phil</li>

<li>
Changed Pa_StopStream() so that it waits for the buffers to drain.</li>

<li>
Added Pa_AbortStream() that stops immediately without waiting.</li>

<li>
Added new test: patest_stop.c to test above two mods.</li>

<li>
Fixed Pa_StreamTime() so that it returns current play position instead
of the write position. Added "patest_sync.c" to demo audio/video sync.</li>

<li>
Improved stability of Macintosh implementation. Added timeouts to prevent
hangs.</li>

<li>
Added Pa_GetSampleSize( PaSampleFormat format );</li>

<li>
Changes some "int"s to "long"s so that PA works properly on Macintosh which
often compiles using 16 bit ints.</li>

<li>
Added Implementation Guide</li>
</ul>
</blockquote>

<h2>
<b>V12 - 1/9/01</b></h2>

<blockquote>
<ul>
<li>
Mac now scans for and queries all devices. But it does not yet support
selecting any other than the default device.</li>

<li>
Blocking I/O calls renamed to separate them from the PortAudio API.</li>

<li>
Cleaned up indentation problems with tabs versus spaces.</li>

<li>
Now attempts to correct bogus sample rate info returned from DirectSound
device queries.</li>
</ul>
</blockquote>

</body>
</html>
